<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    

<script>
// 设置默认值
// 通常时 变量或形参 会有默认值

// let bool = true;
// let a = bool ? 1 : 2;
// let b = bool || 3;
// console.log( a );// 1
// console.log( b );// true

// function fn(a,b){
//     a = a || 1;
//     b = b || 1;
//     console.log( a+b );
// }
// fn();// 2
// fn(2,3);// 5

// 在解构赋值时，给变量设置默认值
// let [a=1,b=2,c=3,d=4] = [12,13,14];
// console.log( a,b,c,d );

// 给形参设置默认值
// function test(a=1,b=1,c=1){
//     console.log( a+b+c );
// }
// test(0,3,4);
// test();

let obj = {
    x: 10,
    y: 20
}
function fun({x=1,y=1}){
    console.log( x+y );
}
fun(obj);// {x=1,y=1} = obj
fun({});// {x=1,y=1} = {}
// fun();// {x=1,y=1} = undefined 报错  undefined.x

// 双重默认值
function fun2({x=1,y=1}={}){// ({}).x
    console.log( x+y );
}
// 实参为undefined，所以实参取默认值{}，然后再拿{}给形参解构赋值
fun2();// {x=1,y=1} = {}

</script>
</body>
</html>